package com.cskaoyan.javase.basic._2variable;

/**
 * 变量的使用
 * 要想使用变量,必须先声明变量,然后初始化变量,才能够使用
 * 仅有声明的变量是不能直接使用的
 *
 * 注意事项:
 *      1.(补充了解)如果一个变量在Java代码中,只有声明没有初始化,那么实际上它会被编译器自动忽略掉,class文件中就不存在这个变量了,程序内存中就更不可能存在这个变量.
 *      2.(重点)
 *      上述提到的变量,必须要先声明,再初始化才能够使用,这种类型的变量,我们称之为"局部变量"
 *      局部变量(local variable): 在Java当中，把定义在局部位置的变量，称之为局部变量。
 *      局部位置: 说白了就是定义在大括号内部的变量,都是定义在局部位置的变量。主要包括以下：
 *          a.方法体大括号内部的变量。典型的main方法大括号之中定义的变量。
 *          b.其它代码块当中定义的变量。代码块的概念会在稍后章节中详谈。
 *      注意:
 *          类名后面的跟的大括号,称之为"类体"
 *          类体当中,不属于局部位置.
 *      局部变量有什么特点呢?
 *          局部变量被局部位置(也就是那个大括号)
 *          限制了其作用域(作用范围)
 *          仅在大括号内部生效
 *          一旦定义了该局部变量,那么在这个作用范围,它都是唯一的,但是离开了这个作用范围,就可以随意定义同名局部变量.
 *
 *          在Java当中,只有定义在局部位置的局部变量才需要手动声明初始化,然后使用
 *          其他类型的变量,可能不需要初始化就能够直接使用
 *
 *
 *
 *
 * @since 16:43
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {

    // 类体大括号之中,它不是局部位置,在这里定义变量,不是局部变量
    int a = 10;

    public static void main(String[] args) {
        //  空常量是引用数据类型独有的一种取值，只有null一个。
        String str = null;
        System sys = null;
        // int num = null;

        // 声明变量
        int a;
        // Variable 'a' might not have been initialized
        // System.out.println(a);
        // 初始化变量
        a = 10;
        System.out.println(a);
        if (true) {
            // 局部位置
            // Variable 'a' is already defined in the scope
            // int a = 10;
            int b = 10;
        }
        int b = 10;
    }
}
